\newcommand{\hand}[4]{
\begin{minipage}[t]{\br}%I chose \br=8em
\begin{tabbing}
%width of parbox depends on the parameters:
%min{\br, max{string #1, ..., string #4}}
\(\spadesuit\) \= #1 \\
\(\heartsuit\) \> #2 \\
\(\diamondsuit\)\> #3 \\
\(\clubsuit\) \> #4
\end{tabbing}
\end{minipage} }%end \hand
%
\newsavebox{\NESW}
\savebox{\NESW}[4em]{%
\raisebox{-1.5\baselineskip}%
{\fbox{\small W
\raisebox{2.6ex}{N}
\hspace*{-1em}
\raisebox{-2.6ex}{S}
{E}
}
} }%end \NESW
%
\newcommand{\crdima}[6]{%
\begin{tabular}[t]{lll}
#1 & #3 & #2\\
#4 & \usebox{\NESW} & #5\\
& #6 &
\end{tabular}
}%end \crdima
%
\newenvironment{bidding}%
{\begin{tabbing}
xxxxxx\=xxxxxx\=xxxxxx\=xxxxxx \kill
West \>North \>East \> South\\
}{\end{tabbing} }%end bidding
%
To eliminate data integrity errors
the listings of the above macros and
the listings of the commands used in the examples are `included'
via a transparent verbatim like environment, [6];
so the same files were used for execution and listing.